/**
 ******************************************************************************
 * @file    Build_Time.h
 * @author  MCU Application Team
 * @brief   Header for Build_Time.c module
 ******************************************************************************
 */

/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __BUILD_TIME_H__
#define __BUILD_TIME_H__

#ifdef __cplusplus
extern "C" {
#endif

// 构建时间
//  ((((2 * 10) + 0) * 10 + 2) * 10) + 4;  先加再乘。10进制，加上1位，就*10 。
#define BUILD_YEAR_H (((__DATE__[7] - '0')) * 10 + (__DATE__[8] - '0'))
#define BUILD_YEAR_L (((__DATE__[9] - '0')) * 10 + (__DATE__[10] - '0'))
#define BUILD_YEAR   ((BUILD_YEAR_H * 100) + BUILD_YEAR_L)

// DATE得到的月数，__DATA__[0-2]表示月的缩写,判断月的缩写的第3位，如果第3位相同的，则判断第1位或者第0位
//[1]Jan [2]Feb  [3]Mar  [4]Apr  [5]May  [6]Jun  [7]Jul  [8]Aug  [9]Sept   [10]Oct  [11]Nov  [12]Dec
#define BUILD_MONTH                                                                                        \
    (__DATE__[2] == 'n'   ? (__DATE__[1] == 'a' ? 1 : 6)                                                   \
     : __DATE__[2] == 'b' ? 2                                                                              \
     : __DATE__[2] == 'r' ? (__DATE__[0] == 'M' ? 3 : 4)                                                   \
     : __DATE__[2] == 'y' ? 5                                                                              \
     : __DATE__[2] == 'l' ? 7                                                                              \
     : __DATE__[2] == 'g' ? 8                                                                              \
     : __DATE__[2] == 'p' ? 9                                                                              \
     : __DATE__[2] == 't' ? 10                                                                             \
     : __DATE__[2] == 'v' ? 11                                                                             \
                          : 12)

// 求取日期：__DATE__ [4]十位，__DATE__ [5]个位。十位为空，则直接用__DATE__ [5]-'0'表示个位。否则十位*10 +
// 个位。
#define BUILD_DAY ((__DATE__[4] == ' ' ? 0 : __DATE__[4] - '0') * 10 + (__DATE__[5] - '0'))

// 18:10:14
#define BUILD_HOUR   ((__TIME__[0] - '0') * 10 + (__TIME__[1] - '0'))
#define BUILD_MINUTE ((__TIME__[3] - '0') * 10 + (__TIME__[4] - '0'))
#define BUILD_SECOND ((__TIME__[6] - '0') * 10 + (__TIME__[7] - '0'))

#define UINT8to2BCD(x_) (((x_ / 10) % 10) << 4) | ((x_ % 10) & 0x0F);

#ifdef __cplusplus
}
#endif

#endif /* __BUILD_TIME_H__ */

/****END OF FILE****/
